This Genie will take the current group and make copies to fill an area.
*/
parse arg sx, sy, nrows, ncols, hsp, vsp
cr = '0a'x
msg = PDSetup.rexx(2,0)
units = getclip(pds_units)
if msg ~= 1 then exit_msg(msg)
signal on halt
signal on break_c
signal on break_e
signal on break_d
defhsp = .5
defvsp = .5
obj = pdm_SelFirstObj()
if obj = 0 then exit_msg("Select a group of objects first")
/*
* If called directly by user, not from another Genie
*/
if sx = '' then do
page = pdm_GetObjPage(obj)
if page = 0 then exit_msg("You must have a page created first")
marg = pdm_GetPageMargins(page)
pgsize = pdm_GetPageSize(page)
left = word(marg, 1)
top = word(marg, 2)
pwidth = word(pgsize, 1) - (left + word(marg, 3))
pheight = word(pgsize, 2) - (top + word(marg, 4))
grprect = pdm_GetObjVisSize()
grpwid = word(grprect, 1)
grphgt = word(grprect, 2)
cols = pwidth % (grpwid + defhsp)
rows = pheight % (grphgt + defvsp)
if units = 3 then
do
form = "Start X:" || pdm_ConvertUnits(1, 3, left) ||cr"Start Y:" || pdm_ConvertUnits(1, 3, top) ||cr"Number of Columns:"cols||cr"Number of Rows:"rows||cr"Horizontal spacing:" || pdm_ConvertUnits(1, 3, defhsp) ||cr"Vertical spacing:"
form = form || pdm_ConvertUnits(1, 3, defvsp)
end
else
form = "Start X:"left||cr"Start Y:"top||cr"Number of Columns:"cols||cr"Number of Rows:"rows||cr"Horizontal spacing:"defhsp||cr"Vertical spacing:"defvsp
form = pdm_GetForm("Enter coordinates", 8, form)
if form = '' then exit_msg()
parse var form sx '0a'x sy '0a'x ncols '0a'x nrows '0a'x hsp '0a'x vsp
if units = 3 then
do
sx = pdm_ConvertUnits(3, 1, sx)
sy = pdm_ConvertUnits(3, 1, sy)
hsp = pdm_ConvertUnits(3, 1, hsp)
vsp = pdm_ConvertUnits(3, 1, vsp)
end
if ~(datatype(sy, n) & datatype(sx, n) & datatype(ncols, n) & datatype(nrows, n) & datatype(hsp, n) & datatype(vsp, n)) then
exit_msg("Invalid Entry")
call pdm_ShowStatus("Working..")
grprect = pdm_GetObjVisSize()
grpwid = word(grprect, 1) + hsp
grphgt = word(grprect, 2) + vsp
end
/*
* Called from Genie, use hsp, vsp as width of tile, not
* as space between tiles
*/
else do
if ~(datatype(sy, n) & datatype(sx, n) & datatype(ncols, n) & datatype(nrows, n) & datatype(hsp, n) & datatype(vsp, n)) then